/*
 * Copyright (c) 2021 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef GEOFENCE_DATA_UTILS_H
#define GEOFENCE_DATA_UTILS_H

#include <vector>
#include <iremote_broker.h>

namespace OHOS {
namespace Msdp {
class GeofenceDataUtils {
public:
    enum GeofenceType{
        GEOFENCE_OPTION_DEFAULT = -1,
        GEOFENCE_OPTION_ADD_POI_GEOFENCE = 0,
        GEOFENCE_OPTION_ADD_POINT_GEOFENCE,
        GEOFENCE_OPTION_NO_MORE_REMINDERS
    };

    enum GeofenceValue {
        VALUE_OUTSIDE = 0,
        VALUE_INSIDE = 1,
        VALUE_ENTER = 2,
        VALUE_EXIT = 3,
    };

    struct PointOptions {
        std::vector<double> centerCoordinate;
        double radius;
    };

    struct PoiOptions {
        std::string keyword;
        std::string poiType;
        std::string poiCity;
    };

    struct LocationData {
        std::vector<double> location;
        std::string cell;
    };
    struct CloudData {
        int32_t id;
        int32_t outerid;
        std::string name;
        std::vector<std::vector<double>> fence;
        std::string poi;
        std::string area;
        std::string filter;
        double radius;
        std::string category;
        std::string operatorstation;
        std::string nearcell;
        std::string shape;
        std::vector<double> center;
        std::string city;
        std::string lastUpdate;
    };

    struct GeofenceData {
        GeofenceType type;
        GeofenceValue callbackvalue;
    };
};
} // namespace Msdp
} // namespace OHOS
#endif // GEOFENCE_DATA_UTILS_H
